package cn.com.twoke.easyproject.aspect.request.lock;


import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 请求锁，避免重复提交
 *
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestLock {

    @AliasFor(value = "prefix")
    String value() default "";

    /**
     * 请求缓存key
     * @return
     */
    @AliasFor(value = "value")
    String prefix() default "";

    /**
     * 请求参数分隔符
     * @return
     */
    String delimiter() default "&";

    /**
     * 是否开启请求锁定
     * @return
     */
    boolean enabled() default true;

    /**
     * 请求锁定时间
     * @return
     */
    long expire() default 5;

    /**
     * 请求锁定时间单位
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 提示小是
     * @return
     */
    String message() default "您的操作太快了,请稍后重试";

    /**
     * 是否针对用
     * @return
     */
    boolean checkUser() default true;


}
